perm filename NEVAL.LSP[206,LSP] blob sn#381619 filedate 1978-09-18 generic text, type T, neo UTF8

(DEFPROP NEVAL
 (NEVAL NEVCON NPRUP TEST TEST2)
NEVALFNS)

(DEFPROP NEVAL
 (LAMBDA(E A)
  (COND	((ATOM E)
	 (COND ((EQ E T) T) ((EQ E NIL) NIL) ((NUMBERP E) E) (T (NEVAL (CADR (ASSOC E A)) (CDDR (ASSOC E A))))))
	((ATOM (CAR E))
	 (COND ((EQ (CAR E) (QUOTE CAR)) (CAR (NEVAL (CADR E) A)))
	       ((EQ (CAR E) (QUOTE CDR)) (CDR (NEVAL (CADR E) A)))
	       ((EQ (CAR E) (QUOTE CONS)) (CONS (NEVAL (CADR E) A) (NEVAL (CADDR E) A)))
	       ((EQ (CAR E) (QUOTE ATOM)) (ATOM (NEVAL (CADR E) A)))
	       ((EQ (CAR E) (QUOTE EQ)) (EQ (NEVAL (CADR E) A) (NEVAL (CADDR E) A)))
	       ((EQ (CAR E) (QUOTE QUOTE)) (CADR E))
	       ((EQ (CAR E) (QUOTE COND)) (NEVCON (CDR E) A))
	       ((EQ (CAR E) (QUOTE LIST)) (MAPCAR (CDR E) (FUNCTION (LAMBDA (X) (NEVAL X A)))))
	       (T (NEVAL (CONS (CDR (ASSOC (CAR E) A)) (CDR E)) A))))
	((EQ (CAAR E) (QUOTE LAMBDA)) (NEVAL (CADDAR E) (NPRUP (CADAR E) (CDR E) A)))
	((EQ (CAAR E) (QUOTE LABEL)) (NEVAL (CONS (CADDAR E) (CDR E)) (CONS (CONS (CADAR E) (CAR E)) A)))))
EXPR)

(DEFPROP NEVCON
 (LAMBDA (U A) (COND ((NEVAL (CAAR U) A) (NEVAL (CADAR U) A)) (T (NEVCON (CDR U) A))))
EXPR)

(DEFPROP NPRUP
 (LAMBDA (U V A) (COND ((NULL U) A) (T (CONS (CONS (CAR U) (CONS (CAR V) A)) (NPRUP (CDR U) (CDR V) A)))))
EXPR)

(DEFPROP TEST
  ((LAMBDA (A B) ((LAMBDA (B C) (CONS B C)) A B)) 1 2)
TVALUE)

(DEFPROP TEST2
 ((LAMBDA (A B) ((LAMBDA (BB C) (CONS BB C)) A B)) 1 2)
TVALUE)